package com.wlz.confirm;

import com.rabbitmq.client.*;
import com.wlz.utils.RabbitUtils;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 *  主题（通配符） 模式 -- 消费者
 *  消息确认回退 confirm&return
 * @author wlz
 * @date 2022-06-27  10:42 下午
 */
@Slf4j
public class BaiDu {


    public static void main(String[] args) throws Exception{

        // 获取 tcp 长连接
        Connection connection = RabbitUtils.getConnection();

        // 获取虚拟连接
        Channel channel = connection.createChannel();

        String queueName = "wlz_queue_baidu";

        // 此模式下 交换机必须先创建 （选择 topic 类型）
        String exchangeName = "wlz_weather_topic_confirm";

        //声明队列信息
        channel.queueDeclare(queueName, false, false, false, null);

        //queueBind用于将队列与交换机绑定
        //参数1：队列名 参数2：交互机名  参数三：路由key
        channel.queueBind(queueName, exchangeName, "*.*.*.20201127");

        channel.basicQos(1);

        channel.basicConsume(queueName, false, new DefaultConsumer(channel) {

            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                log.info("baidu 天气收到的气象信息: {}, 消息的tagId: {}", new String(body), envelope.getDeliveryTag());
                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        });


    }
}
